#include <stdio.h>
#include <string.h>
typedef struct _parent{

   int data_parent;

}Parent;

typedef struct _child{

    struct _parent parent;//那么，把父类放到子类结构体的第一个位置有什么作用呢？答案就是当我们使用结
                          //构体类型强制转换时，我们把子类转换成父类时就可以直接访问父类的成员了。即
                          //((子类)转换成父类)->父类成员
    int data_child;
}Child;





//继承，多态
typedef struct Father{
    int father1;
    int father2;
}Father;

typedef struct Son{
    Father father;//利用强制转换内存截断，当子类强转父类，也可以访问父类，但是不能访问其他
    int son1;
    int son2;
//    Father father;//如果父结构放中间或者尾部，子类变父类的属性会发生变化，就不能多态了
}Son;


//int main()
//{
// Son s;
// s.father.father1=1;
// s.father.father2=2;
// printf("s.father.son1=%d\ns.father.son2=%d\n",s.father.father1,s.father.father2);

// Father *f=(Father*)(&s);
// printf("f->father1=%d\nf->father2=%d\n",f->father1,f->father2);

//}
